#ifndef NATIVEPLUGIN_H
#define NATIVEPLUGIN_H

#include <defs/export.h>
#include <defs/global.h>
#include <extensions/plugin.h>

#include <extensions/context.h>
#include <QtCore>


O_PRIVATE_DECLARE(NativePlugin);
class NativePlugin : public Optra::Extensions::Plugin {
    Q_OBJECT
public:
	NativePlugin(Optra::Extensions::Plugin::Type type, const Optra::Extensions::ContextPtr& ctx, const QFileInfo& info, Opl::Core::EntityObject *parent = 0);
	virtual ~NativePlugin();
	void registerObject(const QString& name, Opl::Core::EntityObject* object, const QString& package = "");
	bool registerClass(Opl::Scripting::System::IO::File* file);

public slots:
	bool initialize();
	void start();
	void stop();
	void reload();
private:
    O_PRIVATE_DECLARE_MEMBER(NativePlugin);
};

#endif // NATIVEPLUGIN_H

